/*

    This file is part of Hometree.

    Hometree is free software: you can redistribute it and/or modify
    it under the terms of the GNU Lesser General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    Hometree is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public License
    along with Hometree.  If not, see <http://www.gnu.org/licenses/>.

    Copyright 2011,2012 Roman Held

*/
/********************************************************************\
                            Includes
\********************************************************************/
#include <QDebug>
#include "capi_signalhandler.h"
#include "capi_types.h"

/********************************************************************\
                          Declaration
\********************************************************************/
/*
    Mission: This class is used for redirecting Qt-Signals/Slots
             to C-Callbacks.
*/
/*--------------------------------------------------------------------
*/
HtrPrivateSignalHandler::HtrPrivateSignalHandler()
{
  mStateCallback = NULL;
  mValueCallback = NULL;
  mResource      = NULL;
}

/*--------------------------------------------------------------------
*/
HtrPrivateSignalHandler::~HtrPrivateSignalHandler()
{
}

/*--------------------------------------------------------------------
*/
void HtrPrivateSignalHandler::init(sHtrResource r)
{
  mResource = r; 
  connect(mResource->res,SIGNAL(stateChanged()),
          this, SLOT(stateCallback()));
  connect(mResource->res,SIGNAL(readyRead()),
          this, SLOT(valueCallback()));
}

/*--------------------------------------------------------------------
*/
void HtrPrivateSignalHandler::registerStateCallback(fHtrResCallback stateCallback)
{
  mStateCallback = stateCallback;
}

/*--------------------------------------------------------------------
*/
void HtrPrivateSignalHandler::registerValueCallback(fHtrResCallback valueCallback)
{
  mValueCallback = valueCallback;
}

/*--------------------------------------------------------------------
*/
void HtrPrivateSignalHandler::stateCallback()
{
  if (mStateCallback)
    (*mStateCallback)(mResource);
}

/*--------------------------------------------------------------------
*/
void HtrPrivateSignalHandler::valueCallback()
{
  if (mValueCallback)
    (*mValueCallback)(mResource);
}

